<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
      // 原型链
      // 构造函数
    const Pig = function(uname,age){
      this.uname = uname,
      this.age = age
    }
    // 给构造函数添加公共方法（原型对象）
    Pig.prototype.sex =  '公'
    Pig.prototype.color = function(){
      return '粉色吹风机'
    }

    // 调用原型方法
    const fml = Pig.prototype.sex
    console.log(fml);
    // 使用js自带的构造函数Object创建数组 obj
    const obj = {
      father:'猪爸'
    }
    // 实例化对象
    const peiqi = new Pig('佩奇','6')
    // 调用公共方法
    console.log(peiqi.color());
    // 实例化对象打印构造函数原型
    console.log(peiqi.__proto__);
    // 实例化对象找构造函数原型后再.__proto__找一层，
    console.log(peiqi.__proto__.__proto__);
    // 打印够造函数的原型对象
    console.log(Pig.prototype);
    // 构造函数的原型对象和实例化函数的找到的公共方法相等
    console.log(Pig.prototype === peiqi.__proto__);
    // 打印js内置函数Object创建对象的原型
    console.log(obj.__proto__);
    // 内置函数Object创建对象的原型和实例化对象找构造函数原型后再.__proto__找一层，相等
  console.log(obj.__proto__ === peiqi.__proto__.__proto__);
  // 内置函数Object的原型对象和内置函数Object创建对象的原型和实例化对象找构造函数原型后再.__proto__找一层 相等
  console.log(Object.prototype === obj.__proto__);
  console.log(peiqi.__proto__.__proto__ === Object.prototype);
  // 通过constructor可从事原型找到构造函数
  console.log(peiqi.__proto__.constructor === Pig);
  </script>
</body>
</html>